package Modelo.Participante;

import java.util.Calendar;

import Modelo.Pessoa.Pessoa;

public class Participante extends Pessoa{
	private long nroInscricao;
	private long codEvento;
	private long nroEdicao;
	private boolean tipoOuvinte;
	private boolean tipoApresentador;
	private boolean tipoOrganizador;

	
	
	public Participante(String nomePessoa, String cpfPessoa,
			String enderecoPessoa, Calendar dataNascPessoa, String emailPessoa,
			String telefonePessoa) {
		super(nomePessoa, cpfPessoa, enderecoPessoa, dataNascPessoa, emailPessoa,
				telefonePessoa);
		// TODO Auto-generated constructor stub
	}

	public Participante(long nroInscricao) {
		this.nroInscricao = nroInscricao;
	}

	public Participante(long nroInscricao, long codPessoa, long codEvento,
			long nroEdicao, boolean tipoOuvinte, boolean tipoApresentador,
			boolean tipoOrganizador) {
		super(codPessoa);
		this.nroInscricao = nroInscricao;
		this.codEvento = codEvento;
		this.nroEdicao = nroEdicao;
		this.tipoOuvinte = tipoOuvinte;
		this.tipoApresentador = tipoApresentador;
		this.tipoOrganizador = tipoOrganizador;
	}

	public Participante(long codPessoa, String nomePessoa, String cpfPessoa,
			String enderecoPessoa, Calendar dataNascPessoa, String emailPessoa,
			String telefonePessoa, long nroInscricao, long codEvento,
			long nroEdicao, boolean tipoOuvinte, boolean tipoApresentador,
			boolean tipoOrganizador) {
		super(codPessoa, nomePessoa, cpfPessoa, enderecoPessoa, dataNascPessoa,
				emailPessoa, telefonePessoa);
		this.nroInscricao = nroInscricao;
		this.codEvento = codEvento;
		this.nroEdicao = nroEdicao;
		this.tipoOuvinte = tipoOuvinte;
		this.tipoApresentador = tipoApresentador;
		this.tipoOrganizador = tipoOrganizador;
	}

	public Participante( String nomePessoa, String cpfPessoa,
			String enderecoPessoa, Calendar dataNascPessoa, String emailPessoa,
			String telefonePessoa, long nroInscricao, long codEvento,
			long nroEdicao, boolean tipoOuvinte, boolean tipoApresentador,
			boolean tipoOrganizador) {
		super( nomePessoa, cpfPessoa, enderecoPessoa, dataNascPessoa,
				emailPessoa, telefonePessoa);
		this.nroInscricao = nroInscricao;
		this.codEvento = codEvento;
		this.nroEdicao = nroEdicao;
		this.tipoOuvinte = tipoOuvinte;
		this.tipoApresentador = tipoApresentador;
		this.tipoOrganizador = tipoOrganizador;
	}
	
	public Participante(){
	
	}
	
	public long getNroInscricao() {
		return nroInscricao;
	}
	public void setNroInscricao(long nroInscricao) {
		this.nroInscricao = nroInscricao;
	}
	public long getCodEvento() {
		return codEvento;
	}
	public void setCodEvento(long codEvento) {
		this.codEvento = codEvento;
	}
	public long getNroEdicao() {
		return nroEdicao;
	}
	public void setNroEdicao(long nroEdicao) {
		this.nroEdicao = nroEdicao;
	}
	public boolean isTipoOuvinte() {
		return tipoOuvinte;
	}
	public void setTipoOuvinte(boolean tipoOuvinte) {
		this.tipoOuvinte = tipoOuvinte;
	}
	public boolean isTipoApresentador() {
		return tipoApresentador;
	}
	public void setTipoApresentador(boolean tipoApresentador) {
		this.tipoApresentador = tipoApresentador;
	}
	public boolean isTipoOrganizador() {
		return tipoOrganizador;
	}
	public void setTipoOrganizador(boolean tipoOrganizador) {
		this.tipoOrganizador = tipoOrganizador;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = super.hashCode();
		result = prime * result + (int) (codEvento ^ (codEvento >>> 32));
		result = prime * result + (int) (nroEdicao ^ (nroEdicao >>> 32));
		result = prime * result + (int) (nroInscricao ^ (nroInscricao >>> 32));
		result = prime * result + (tipoApresentador ? 1231 : 1237);
		result = prime * result + (tipoOrganizador ? 1231 : 1237);
		result = prime * result + (tipoOuvinte ? 1231 : 1237);
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (!super.equals(obj))
			return false;
		if (getClass() != obj.getClass())
			return false;
		Participante other = (Participante) obj;
		if (codEvento != other.codEvento)
			return false;
		if (nroEdicao != other.nroEdicao)
			return false;
		if (nroInscricao != other.nroInscricao)
			return false;
		if (tipoApresentador != other.tipoApresentador)
			return false;
		if (tipoOrganizador != other.tipoOrganizador)
			return false;
		if (tipoOuvinte != other.tipoOuvinte)
			return false;
		return true;
	}

}
